package cn.zhukelili.expand2;

/**
 * @description:
 * @author: hhbeast
 * @since: 2018/7/28 15:52
 */
public class Client2 {
    public static void main(String[] args) {
        String key1 = "科目1上海";
        String key2 = "科目1上海";
        //初始化对象池
        ExtrinsicState state1 = new ExtrinsicState();
        state1.setSubject("科目1");
        state1.setLocation("上海");
        SignInfoFactory.getSignInfo(state1);
        ExtrinsicState state2 = new ExtrinsicState();
        state2.setSubject("科目1");
        state2.setLocation("上海");
        //初始化对象池
        SignInfoFactory.getSignInfo(state1);
        //计算执行10万次需要的时间
        long currentTime = System.currentTimeMillis();
        for(int i=0;i<10000000;i++){
            SignInfoFactory.getSignInfo(state2);
        }
        long tailTime = System.currentTimeMillis();
        System.out.println("执行时间："+(tailTime - currentTime) + " ms");
    }
}

/*
看到没？一半的效率，这还是非常简单的享元对象，看看我们重写的equals方法和
hashCode方法，这段代码是必须实现的，如果比较复杂，这个时间差异会更大。
各位，想想看，使用自己编写的类作为外部状态，必须覆写equals方法和hashCode方
法，而且执行效率还比较低，这种吃力不讨好的事情最好别做，外部状态最好以Java的基本
类型作为标志，如String、int等，可以大幅地提升效率。
 */
